home *** CD-ROM | disk | FTP | other *** search
- ###
- # Description file for Crack dictionary processor. ADE Muffett, Mar 1992
- ###
- # Ordinary Commands:
- # : = no-op - do nothing to the input word
- # <n = reject word UNLESS it is < n characters long, where n = 0-9a-z
- # >n = reject word UNLESS it is > n characters long, where n = 0-9a-z
- # ^x = prepend character 'x' to word
- # $y = append character 'y' to word
- # l = force word to be lowercase
- # u = force word to be uppercase
- # c = force word to be capitalised
- # r = reverse word: "Fred" -> "derF"
- # d = duplicate word: "Fred" -> "FredFred"
- # f = reflect word: "Fred" -> "FredderF"
- # p = make best attempt to pluralise a lowercase word
- # onx = overstrike character in position 'n' (start at 0) with character 'x'
- # nb: little overflow checking is done, so use '<' and '>' carefully
- # inx = insert character 'x' in position 'n' (start at 0) and shift the rest
- # of the input string right.
- # eg: i3* on "wibble" yields "wib*ble"; i0* on "wibble" yields "*wibble"
- # nb: if n > strlen(input), character 'x' will be appended
- # xnm = extract substring from position n (start at 0) for up to m characters
- # eg: using x27 on "autobogotification" yields "tobogot"
- # eg: using x3a on "autobogotification" yields "obogotific" (10 chars)
- # nb: little overflow checking is done, so use '<' and '>' carefully
- ###
- # Commands which may utilise character classes: (note special use of '?')
- # sxy = replace (swap) all 'x' in the word with 'y'
- # s?cy = replace all characters of class 'c' in the word with y
- # @x = purge all 'x' from the word
- # @?c = purge all characters of class 'c' from the word
- # !y = reject word if it contains character 'y'
- # !?c = reject word if it contains a character in class 'c'
- # /x = reject word unless it contains character 'x'
- # /?c = reject word unless it contains a character in class 'c'
- # =nx = reject word unless char at position 'n' is equal to x
- # =n?c = reject word unless char at position 'n' is in class 'c'
- # nb: the word always starts at position 0
- ###
- # Character classes for use in above:
- # ?? matches "?"
- # ?v matches vowels aeiou
- # ?c matches consonants bcdfghjklmnpqrstvwxyz
- # ?w matches whitespace (space, tab)
- # ?p matches punctuation .,:;'"?!`
- # ?s matches symbols $%^&*()-_+=|\[]{}#@/~
- # ?l matches lowercase letters
- # ?u matches uppercase letters
- # ?d matches any digit
- # ?a matches any letter of the alphabet
- # ?x matches any letter of the alphabet, or any digit (ie: is alphanumeric)
- # The complement of a class may be matched by the uppercase of it's letter
- # ie: where ?d == DIGITS, ?D == NON-DIGITS, and so on.
- ###
- # Many people haven't realised that the above is a complete language; ie:
- # if you want to create a dictionary of short words with "123" appended,
- # use "<6l$1$2$3".
- ###
- # A FINAL NOTE: remember that very few users are aware that passwords
- # stop at 8 chars long; so, while it IS worthwhile to check for words
- # being 8 or more chars long before appending a character, it is NOT
- # worthwhile to do the same when prepending characters. Hence:-
- #
- # "williamsburgh" -> "williams" }\
- # "williamsburgh1" -> "williams" }/~~~Will be uniqued.
- # "1williamsburgh" -> "1william"
- #
- ###
- # So, here we go; try to order these in the order most likely to be a
- # password. First we try to make selections from the pure alphabetic
- # words in the dicts, then we get onto the weird stuff.
- ######################################################################
-
- # Force every pure alphabetic word lowercase and try it
- # NOT-CONTAIN ANY NON-ALPHA, LOWERCASE
- !?Al
-
- # Pluralise every significant one of the above
- # MORE-THAN 2, NOT-CONTAIN ANY NON-ALPHA, LOWERCASE, PLURALISE
- >2!?Alp
-
- # Try variations of anything that is not pure alnum
- # CONTAIN ANY NON-ALNUM
- /?X
- # CONTAIN ANY NON-ALNUM, CONTAIN ANY UPPER, LOWERCASE
- /?X/?ul
-
- # Any alphaword >2 & <8 chars long, append a digit or simple punctuation
- # since few ppl add non alpha chars to a already non-alpha word
- # MORE-THAN 2, LESS-THAN 8, NOT ANY NON-ALPHA, LOWERCASE, APPEND <whatever>
- >2<8!?Al$0
- >2<8!?Al$1
- >2<8!?Al$2
- >2<8!?Al$3
- >2<8!?Al$4
- >2<8!?Al$5
- >2<8!?Al$6
- >2<8!?Al$7
- >2<8!?Al$8
- >2<8!?Al$9
- >2<8!?Al$!
- >2<8!?Al$.
- >2<8!?Al$?
- >2<8!?Al$ :
- # trailing colon (no-op) on last line delimits space character.
-
- # Lowercase every pure alphabetic word and reverse it
- # MORE-THAN 2, NOT-CONTAIN ANY NON-ALPHA, LOWERCASE, REVERSE
- >2!?Alr
-
- # Capitalise every pure alnum word (ie: not anything which is not alnum)
- # MORE-THAN 2, NOT-CONTAIN ANY NON-ALNUM, CAPITALISE
- >2!?Xc
-
- # Anything uppercase
- # MORE-THAN 2, NOT-CONTAIN ANY NON-ALNUM, UPPERCASE
- >2!?Xu
-
- # Pure alphabetic words with vowels removed which are still fairly long
- # NOT-CONTAIN ANY NON-ALPHA, CONTAIN ANY VOWEL, PURGE ANY VOWEL, MORE-THAN 3
- !?A/?v@?v>3
-
- # Look, I'm getting really bored of this monotone uppercase typing, so
- # if it's OK with you, I'll drop the commentaries on each rule. You
- # should have got the idea by now...
-
- # Longish pure words lowercased and reflected
- >2!?Alf
-
- # Words containing whitespace, which is then squeezed out
- /?w@?w>3
-
- # In a similar vein, words with punctuation, squeezed out
- /?p@?p>3
-
- # Reasonably short words, duplicated. eg: "fredfred"
- >1<7!?Ald
-
- ###
- # >From: mycroft@edu.mit.ai.gnu
- # >In addition to the standard dicts.rules, I use the following set. You
- # >can guess what it does.
- # I've tidied this up a bit (I hope) - alec
- ###
- >2/asa2l
- >2/asa4l
- >2/ese3l
- >2/hsh4l
- >2/isi1l
- >2/lsl1l
- >2/oso0l
- >2/sss$l
- >2/asa2/hsh4l
- >2/asa2/sss$l
- >2/asa4/hsh4l
- >2/ese3/asa2l
- >2/ese3/asa4l
- >2/ese3/hsh4l
- >2/ese3/sss$l
- >2/isi1/asa2l
- >2/isi1/asa4l
- >2/isi1/ese3l
- >2/isi1/hsh4l
- >2/isi1/sss$l
- >2/lsl1/asa2l
- >2/lsl1/asa4l
- >2/lsl1/ese3l
- >2/lsl1/hsh4l
- >2/lsl1/isi1l
- >2/lsl1/oso0l
- >2/lsl1/sss$l
- >2/oso0/asa2l
- >2/oso0/asa4l
- >2/oso0/ese3l
- >2/oso0/hsh4l
- >2/oso0/isi1l
- >2/oso0/sss$l
- >2/sss$/asa4l
- >2/sss$/hsh4l
- >2/asa2/sss$/hsh4l
- >2/ese3/asa2/hsh4l
- >2/ese3/asa2/sss$l
- >2/ese3/asa4/hsh4l
- >2/ese3/sss$/asa4l
- >2/ese3/sss$/hsh4l
- >2/isi1/asa2/hsh4l
- >2/isi1/asa2/sss$l
- >2/isi1/asa4/hsh4l
- >2/isi1/ese3/asa2l
- >2/isi1/ese3/asa4l
- >2/isi1/ese3/hsh4l
- >2/isi1/ese3/sss$l
- >2/isi1/sss$/asa4l
- >2/isi1/sss$/hsh4l
- >2/lsl1/asa2/hsh4l
- >2/lsl1/asa2/sss$l
- >2/lsl1/asa4/hsh4l
- >2/lsl1/ese3/asa2l
- >2/lsl1/ese3/asa4l
- >2/lsl1/ese3/hsh4l
- >2/lsl1/ese3/sss$l
- >2/lsl1/isi1/asa2l
- >2/lsl1/isi1/asa4l
- >2/lsl1/isi1/ese3l
- >2/lsl1/isi1/hsh4l
- >2/lsl1/isi1/sss$l
- >2/lsl1/oso0/asa2l
- >2/lsl1/oso0/asa4l
- >2/lsl1/oso0/ese3l
- >2/lsl1/oso0/hsh4l
- >2/lsl1/oso0/isi1l
- >2/lsl1/oso0/sss$l
- >2/lsl1/sss$/asa4l
- >2/lsl1/sss$/hsh4l
- >2/oso0/asa2/hsh4l
- >2/oso0/asa2/sss$l
- >2/oso0/asa4/hsh4l
- >2/oso0/ese3/asa2l
- >2/oso0/ese3/asa4l
- >2/oso0/ese3/hsh4l
- >2/oso0/ese3/sss$l
- >2/oso0/isi1/asa2l
- >2/oso0/isi1/asa4l
- >2/oso0/isi1/ese3l
- >2/oso0/isi1/hsh4l
- >2/oso0/isi1/sss$l
- >2/oso0/sss$/asa4l
- >2/oso0/sss$/hsh4l
- >2/sss$/asa4/hsh4l
- >2/ese3/asa2/sss$/hsh4l
- >2/ese3/sss$/asa4/hsh4l
- >2/isi1/asa2/sss$/hsh4l
- >2/isi1/ese3/asa2/hsh4l
- >2/isi1/ese3/asa2/sss$l
- >2/isi1/ese3/asa4/hsh4l
- >2/isi1/ese3/sss$/asa4l
- >2/isi1/ese3/sss$/hsh4l
- >2/isi1/sss$/asa4/hsh4l
- >2/lsl1/asa2/sss$/hsh4l
- >2/lsl1/ese3/asa2/hsh4l
- >2/lsl1/ese3/asa2/sss$l
- >2/lsl1/ese3/asa4/hsh4l
- >2/lsl1/ese3/sss$/asa4l
- >2/lsl1/ese3/sss$/hsh4l
- >2/lsl1/isi1/asa2/hsh4l
- >2/lsl1/isi1/asa2/sss$l
- >2/lsl1/isi1/asa4/hsh4l
- >2/lsl1/isi1/ese3/asa2l
- >2/lsl1/isi1/ese3/asa4l
- >2/lsl1/isi1/ese3/hsh4l
- >2/lsl1/isi1/ese3/sss$l
- >2/lsl1/isi1/sss$/asa4l
- >2/lsl1/isi1/sss$/hsh4l
- >2/lsl1/oso0/asa2/hsh4l
- >2/lsl1/oso0/asa2/sss$l
- >2/lsl1/oso0/asa4/hsh4l
- >2/lsl1/oso0/ese3/asa2l
- >2/lsl1/oso0/ese3/asa4l
- >2/lsl1/oso0/ese3/hsh4l
- >2/lsl1/oso0/ese3/sss$l
- >2/lsl1/oso0/isi1/asa2l
- >2/lsl1/oso0/isi1/asa4l
- >2/lsl1/oso0/isi1/ese3l
- >2/lsl1/oso0/isi1/hsh4l
- >2/lsl1/oso0/isi1/sss$l
- >2/lsl1/oso0/sss$/asa4l
- >2/lsl1/oso0/sss$/hsh4l
- >2/lsl1/sss$/asa4/hsh4l
- >2/oso0/asa2/sss$/hsh4l
- >2/oso0/ese3/asa2/hsh4l
- >2/oso0/ese3/asa2/sss$l
- >2/oso0/ese3/asa4/hsh4l
- >2/oso0/ese3/sss$/asa4l
- >2/oso0/ese3/sss$/hsh4l
- >2/oso0/isi1/asa2/hsh4l
- >2/oso0/isi1/asa2/sss$l
- >2/oso0/isi1/asa4/hsh4l
- >2/oso0/isi1/ese3/asa2l
- >2/oso0/isi1/ese3/asa4l
- >2/oso0/isi1/ese3/hsh4l
- >2/oso0/isi1/ese3/sss$l
- >2/oso0/isi1/sss$/asa4l
- >2/oso0/isi1/sss$/hsh4l
- >2/oso0/sss$/asa4/hsh4l
- >2/isi1/ese3/asa2/sss$/hsh4l
- >2/isi1/ese3/sss$/asa4/hsh4l
- >2/lsl1/ese3/asa2/sss$/hsh4l
- >2/lsl1/ese3/sss$/asa4/hsh4l
- >2/lsl1/isi1/asa2/sss$/hsh4l
- >2/lsl1/isi1/ese3/asa2/hsh4l
- >2/lsl1/isi1/ese3/asa2/sss$l
- >2/lsl1/isi1/ese3/asa4/hsh4l
- >2/lsl1/isi1/ese3/sss$/asa4l
- >2/lsl1/isi1/ese3/sss$/hsh4l
- >2/lsl1/isi1/sss$/asa4/hsh4l
- >2/lsl1/oso0/asa2/sss$/hsh4l
- >2/lsl1/oso0/ese3/asa2/hsh4l
- >2/lsl1/oso0/ese3/asa2/sss$l
- >2/lsl1/oso0/ese3/asa4/hsh4l
- >2/lsl1/oso0/ese3/sss$/asa4l
- >2/lsl1/oso0/ese3/sss$/hsh4l
- >2/lsl1/oso0/isi1/asa2/hsh4l
- >2/lsl1/oso0/isi1/asa2/sss$l
- >2/lsl1/oso0/isi1/asa4/hsh4l
- >2/lsl1/oso0/isi1/ese3/asa2l
- >2/lsl1/oso0/isi1/ese3/asa4l
- >2/lsl1/oso0/isi1/ese3/hsh4l
- >2/lsl1/oso0/isi1/ese3/sss$l
- >2/lsl1/oso0/isi1/sss$/asa4l
- >2/lsl1/oso0/isi1/sss$/hsh4l
- >2/lsl1/oso0/sss$/asa4/hsh4l
- >2/oso0/ese3/asa2/sss$/hsh4l
- >2/oso0/ese3/sss$/asa4/hsh4l
- >2/oso0/isi1/asa2/sss$/hsh4l
- >2/oso0/isi1/ese3/asa2/hsh4l
- >2/oso0/isi1/ese3/asa2/sss$l
- >2/oso0/isi1/ese3/asa4/hsh4l
- >2/oso0/isi1/ese3/sss$/asa4l
- >2/oso0/isi1/ese3/sss$/hsh4l
- >2/oso0/isi1/sss$/asa4/hsh4l
- >2/lsl1/isi1/ese3/asa2/sss$/hsh4l
- >2/lsl1/isi1/ese3/sss$/asa4/hsh4l
- >2/lsl1/oso0/ese3/asa2/sss$/hsh4l
- >2/lsl1/oso0/ese3/sss$/asa4/hsh4l
- >2/lsl1/oso0/isi1/asa2/sss$/hsh4l
- >2/lsl1/oso0/isi1/ese3/asa2/hsh4l
- >2/lsl1/oso0/isi1/ese3/asa2/sss$l
- >2/lsl1/oso0/isi1/ese3/asa4/hsh4l
- >2/lsl1/oso0/isi1/ese3/sss$/asa4l
- >2/lsl1/oso0/isi1/ese3/sss$/hsh4l
- >2/lsl1/oso0/isi1/sss$/asa4/hsh4l
- >2/oso0/isi1/ese3/asa2/sss$/hsh4l
- >2/oso0/isi1/ese3/sss$/asa4/hsh4l
- >2/lsl1/oso0/isi1/ese3/asa2/sss$/hsh4l
- >2/lsl1/oso0/isi1/ese3/sss$/asa4/hsh4l
- # Bleagh! pant, pant - alec
-
- # Oddly enough, people prefixing passwords with numbers is quite a lot
- # rarer than suffixing numbers. Hence, we are further down the file
- # before trying this. Oh well, let's nail the buggers anyway...
- >2<8l^ :
- >2l^0
- >2l^1
- >2l^2
- >2l^3
- >2l^4
- >2l^5
- >2l^6
- >2l^7
- >2l^8
- >2l^9
-
- # Capitalise and then reverse every word (eg: "derF")
- >2!?Xcr
-
- # Reverse and then capitalise every alphabetic word (eg: "Derf")
- >2rc
-
- # Pure words capitalised with various ejaculatory punctuation added
- # eg: "Cats!" for Andrew Floyd-Drebber fans...
- >2<8!?Ac$!
- >2<8!?Ac$.
- >2<8!?Ac$?
-
- # Uppercase words with various things appended or swapped out
- >2<8u$!
- >2<8u$.
- >2<8u$?
- >2/OsO0u
-
- # Really weird uppercase variations
- >2ud
- >2uf
- >2ur
-
- # Yes, I know all this looks like line noise, but I haven't put regexp in yet.
-